package com.bigdata.utils;

import com.alibaba.fastjson.JSONObject;

import java.io.UnsupportedEncodingException;
import java.util.Random;

/**
 * @className: DataUtil
 * @description: TODO 数据处理工具类
 * @author 石永鑫大数据工作室
 * @date: 2021/3/12 21:46
 * @version: 1.0
 */
public class DataUtil {
    static Random rand = new Random();
    /**
     * @Param :
     * @return char
     * @description TODO 生成单个汉字
     * @author 石永鑫大数据工作室
     * @date 2021/3/12 21:56
     */
    private static char getRandomChar() {
        String str = "";
        int hightPos; //
        int lowPos;
        Random random = new Random();
        //随机生成汉子的两个字节
        hightPos = (176 + Math.abs(random.nextInt(39)));
        lowPos = (161 + Math.abs(random.nextInt(93)));
        byte[] b = new byte[2];
        b[0] = (Integer.valueOf(hightPos)).byteValue();
        b[1] = (Integer.valueOf(lowPos)).byteValue();
        try {
            str = new String(b, "GBK");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            System.out.println("错误");
        }
        return str.charAt(0);
    }
    /**
     * @Param length:  字符串长度
     * @return java.lang.String 大写字母字符串
     * @description TODO 获取随机字母组合
     * @author 石永鑫大数据工作室
     * @date 2021/3/12 21:56
     */
    public static String getRandomChar(Integer length) {
        StringBuilder str = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            str.append((char) (65 + random.nextInt(26)));// 取得大写字母
        }
        return str.toString();
    }
    /**
     * @Param length:  指定生成字符串长度
     * @return java.lang.String 大写字母和数字拼接字符串
     * @description TODO 获取随机字母数字组合
     * @author 石永鑫大数据工作室
     * @date 2021/3/12 21:57
     */
    public static String getRandomCharAndNumr(Integer length) {
        StringBuilder str = new StringBuilder();
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            boolean flag = random.nextBoolean();
            if (flag) {
                // 字符串
                // int choice = random.nextBoolean() ? 65 : 97; 取得65大写字母还是97小写字母
                str.append((char) (65 + random.nextInt(26)));// 取得大写字母
            } else {
                // 数字
                str.append(String.valueOf(random.nextInt(10)));
            }
        }
        return str.toString();
    }
    /**
     * @Param eventName: 事件名称
     * @Param jsonObject:  事件字段json字符串
     * @return com.alibaba.fastjson.JSONObject
     * @description TODO 为各个事件类型的公共字段（时间、事件类型、Json数据）拼接
     * @author 石永鑫大数据工作室
     * @date 2021/3/12 21:58
     */
    public static JSONObject packEventJson(String eventName, JSONObject jsonObject) {
        Random rand = new Random();
        JSONObject eventJson = new JSONObject();
        //ett : 客户端事件产生时间
        eventJson.put("ett", (System.currentTimeMillis() - rand.nextInt(99999999)) + "");
        eventJson.put("en", eventName);
        eventJson.put("kv", jsonObject);

        return eventJson;
    }
    /**
     * @Param :
     * @return java.lang.String
     * @description TODO 拼接成多个汉字
     * @author 石永鑫大数据工作室
     * @date 2021/3/12 21:58
     */
    public static String getCONTENT() {
        StringBuilder str = new StringBuilder();
        for (int i = 0; i < rand.nextInt(100); i++) {
            str.append(getRandomChar());
        }
        return str.toString();
    }

    public static void main(String[] args) {
        String str = getRandomChar(10);
        System.out.println(str);
    }
}
